Completed
Push — master ( 46c1b5...5f12f5 )
by
unknown
01:58
created

ql.executeWhereClause() !=ꞌ)   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
nc 1
dl 0
loc 11
rs 9.4285
nop 0
1
var chai = require('chai');
2
var path = require('path');
3
4
var config = require('../src/cli').config
5
config.set({root: path.join(__dirname,'fixtures')})
6
7
var cmsData = require('../src/cli').cmsData
8
var Manager = require('../src/cli').Manager;
9
var fse = require('fs-extra');
10
11
describe('Request', function() {
12
  before( function(done) {
13
    Manager.instance.init()
14
      .then(function () {
15
        Manager.instance._whereKeys = ['title', 'priority', 'abe_meta', 'articles']
16
        Manager.instance.updateList()
17
18
        this.fixture = {
19
          tag: fse.readFileSync(__dirname + '/fixtures/templates/article.html', 'utf8'),
0 ignored issues
show
Compatibility introduced by
Consider using the path module for constructing paths since they are otherwise not cross-OS compatible.
Loading history...
20
          jsonArticle: fse.readJsonSync(__dirname + '/fixtures/data/article-1.json'),
0 ignored issues
show
Compatibility introduced by
Consider using the path module for constructing paths since they are otherwise not cross-OS compatible.
Loading history...
21
          jsonHomepage: fse.readJsonSync(__dirname + '/fixtures/data/homepage-1.json')
0 ignored issues
show
Compatibility introduced by
Consider using the path module for constructing paths since they are otherwise not cross-OS compatible.
Loading history...
22
        }
23
        done()
24
        
25
      }.bind(this))
26
  });
27
28
  /**
29
   * cmsData.sql.executeQuery
30
   * 
31
   */
32
  it('cmsData.sql.executeQuery()', function(done) {
33
    try {
34
      var match = 'select * from ../'
35
      var jsonPage = {}
0 ignored issues
show
Unused Code introduced by
The variable jsonPage seems to be never used. Consider removing it.
Loading history...
36
      var res = cmsData.sql.handleSqlRequest(match, {})
37
38
      chai.assert.equal(res.string, 'select ["*"] from ["___abe_dot______abe_dot______abe___"] ', 'select not well formatted')
39
      done();
40
    } catch (x) {
41
      done(x);
42
    }
43
  });
44
45
  /**
46
   * cmsData.sql.keepOnlyPublishedPost
47
   * 
48
   */
49
  it('cmsData.sql.keepOnlyPublishedPost()', function() {
50
    var res = cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList())
51
    chai.expect(res).to.have.length(2);
52
  });
53
54
  /**
55
   * cmsData.sql.executeFromClause
56
   * 
57
   */
58
  it('cmsData.sql.executeFromClause()', function() {
59
    var res = cmsData.sql.executeFromClause(cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()), ['/'], ['/'])
60
    chai.expect(res).to.have.length(2);
61
  });
62
63
  it('cmsData.sql.executeWhereClause() =', function() {
64
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`article`', {})
65
    var res = cmsData.sql.executeWhereClause(
66
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
67
      request.where,
68
      request.limit,
69
      request.columns, {}
70
    )
71
    chai.expect(res, '`abe_meta.template`=`article`').to.have.length(1);
72
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
73
74
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`{{abe_meta.template}}`', this.fixture.jsonHomepage)
75
    res = cmsData.sql.executeWhereClause(
76
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
77
      request.where,
78
      request.limit,
79
      request.columns,
80
      this.fixture.jsonHomepage
81
    )
82
    chai.expect(res, '`abe_meta.template`=`{{abe_meta.template}}`').to.have.length(1);
83
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
84
85
    request = cmsData.sql.handleSqlRequest('select title from ./ where `{{abe_meta.template}}`=`{{abe_meta.template}}`', this.fixture.jsonHomepage)
86
    res = cmsData.sql.executeWhereClause(
87
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
88
      request.where,
89
      request.limit,
90
      request.columns,
91
      this.fixture.jsonHomepage
92
    )
93
    chai.expect(res, '`{{abe_meta.template}}`=`{{abe_meta.template}}`').to.have.length(1);
94
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
95
  });
96
  it('cmsData.sql.executeWhereClause() !=', function() {
97
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`!=`homepage`', {})
98
    var res = cmsData.sql.executeWhereClause(
99
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
100
      request.where,
101
      request.limit,
102
      request.columns, {}
103
    )
104
    chai.expect(res, '`abe_meta.template`!=`homepage`').to.have.length(1);
105
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
106
  });
107
  it('cmsData.sql.executeWhereClause() >', function() {
108
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`>`1`', {})
109
    var res = cmsData.sql.executeWhereClause(
110
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
111
      request.where,
112
      request.limit,
113
      request.columns,
114
      {}
115
    )
116
    chai.expect(res, '`priority`>`1`').to.have.length(1);
117
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
118
  });
119
  it('cmsData.sql.executeWhereClause() >=', function() {
120
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`>=`1`', {})
121
    var res = cmsData.sql.executeWhereClause(
122
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
123
      request.where,
124
      request.limit,
125
      request.columns,
126
      {}
127
    )
128
    chai.expect(res, '`priority`>=`1`').to.have.length(2);
129
  });
130
  it('cmsData.sql.executeWhereClause() <', function() {
131
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`<`1`', {})
132
    var res = cmsData.sql.executeWhereClause(
133
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
134
      request.where,
135
      request.limit,
136
      request.columns,
137
      {}
138
    )
139
    chai.expect(res, '`priority`<`1`').to.have.length(0);
140
  });
141
  it('cmsData.sql.executeWhereClause() <=', function() {
142
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`<=`1`', {})
143
    var res = cmsData.sql.executeWhereClause(
144
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
145
      request.where,
146
      request.limit,
147
      request.columns,
148
      {}
149
    )
150
    chai.expect(res, ' `priority`<=`1`').to.have.length(1);
151
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
152
  });
153
  it('cmsData.sql.executeWhereClause() LIKE', function() {
154
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` LIKE `home`', {})
155
    var res = cmsData.sql.executeWhereClause(
156
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
157
      request.where,
158
      request.limit,
159
      request.columns,
160
      {}
161
    )
162
    chai.expect(res, '`abe_meta.template` LIKE `home`').to.have.length(1);
163
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
164
  });
165
  it('cmsData.sql.executeWhereClause() NOT LIKE', function() {
166
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT LIKE `home`', {})
167
    var res = cmsData.sql.executeWhereClause(
168
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
169
      request.where,
170
      request.limit,
171
      request.columns,
172
      {}
173
    )
174
    chai.expect(res, '`abe_meta.template` NOT LIKE `home`').to.have.length(1);
175
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
176
  });
177
  it('cmsData.sql.executeWhereClause() AND', function() {
178
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`homepage` AND title=`homepage`', {})
179
    var res = cmsData.sql.executeWhereClause(
180
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
181
      request.where,
182
      request.limit,
183
      request.columns,
184
      {}
185
    )
186
    chai.expect(res, '`abe_meta.template`=`homepage` AND title=`homepage`').to.have.length(1);
187
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
188
  });
189
  it('cmsData.sql.executeWhereClause() OR', function() {
190
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`homepage` OR `abe_meta.template`=`article`', {})
191
    var res = cmsData.sql.executeWhereClause(
192
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
193
      request.where,
194
      request.limit,
195
      request.columns,
196
      {}
197
    )
198
    chai.expect(res, '`abe_meta.template`=`homepage` OR `abe_meta.template`=`article`').to.have.length(2);
199
  });
200
  it('cmsData.sql.executeWhereClause() IN', function() {
201
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` IN (`homepage`,`test`)', {})
202
    var res = cmsData.sql.executeWhereClause(
203
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
204
      request.where,
205
      request.limit,
206
      request.columns,
207
      {}
208
    )
209
    chai.expect(res, '`abe_meta.template` IN (`homepage`,`test`)').to.have.length(1);
210
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
211
212
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` IN (`{{articles}}`)', this.fixture.jsonHomepage)
213
    res = cmsData.sql.executeWhereClause(
214
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
215
      request.where,
216
      request.limit,
217
      request.columns,
218
      this.fixture.jsonHomepage
219
    )
220
    chai.expect(res, '`abe_meta.template` IN (`{{articles}}`').to.have.length(1);
221
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
222
  });
223
  it('cmsData.sql.executeWhereClause() NOT IN', function() {
224
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT IN (`homepage`,`test`)', {})
225
    var res = cmsData.sql.executeWhereClause(
226
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
227
      request.where,
228
      request.limit,
229
      request.columns,
230
      {}
231
    )
232
    chai.expect(res, '`abe_meta.template` NOT IN (`homepage`,`test`)').to.have.length(1);
233
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
234
235
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT IN (`{{articles}}`)', this.fixture.jsonHomepage)
236
    res = cmsData.sql.executeWhereClause(
237
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
238
      request.where,
239
      request.limit,
240
      request.columns,
241
      this.fixture.jsonHomepage
242
    )
243
    chai.expect(res, '`abe_meta.template` NOT IN (`{{articles}}`)').to.have.length(1);
244
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
245
  });
246
247
  /**
248
   * cmsData.sql.whereLike
249
   * 
250
   */
251
  it('cmsData.sql.getSourceType()', function() {
252
    chai.expect(cmsData.sql.getSourceType('http://google.com')).to.equal('url');
253
    chai.expect(cmsData.sql.getSourceType('select * from test')).to.equal('request');
254
    chai.expect(cmsData.sql.getSourceType('{"test":"test"}')).to.equal('value');
255
    chai.expect(cmsData.sql.getSourceType('references.json')).to.equal('file');
256
    chai.expect(cmsData.sql.getSourceType('test')).to.equal('other');
257
  });
258
259
  /**
260
   * cmsData.source.requestList
261
   * 
262
   */
263
  it('cmsData.source.requestList()', function(done) {
264
    var matches = cmsData.regex.getTagAbeTypeRequest(this.fixture.tag)
265
266
    chai.expect(matches[0][0]).to.not.be.null
0 ignored issues
show
introduced by
The result of the property access to chai.expect(matches.0.0).to.not.be.null is not used.
Loading history...
267
268
    var attributes = cmsData.attributes.getAll(matches[0][0], {})
269
    chai.expect(matches[0][0]).to.not.be.null
0 ignored issues
show
introduced by
The result of the property access to chai.expect(matches.0.0).to.not.be.null is not used.
Loading history...
270
271
    var jsonPage = {}
272
    cmsData.source.requestList(attributes, '', matches[0][0], jsonPage)
273
      .then(function () {
274
        chai.expect(jsonPage.abe_source).to.not.be.undefined
0 ignored issues
show
introduced by
The result of the property access to chai.expect(jsonPage.abe...ce).to.not.be.undefined is not used.
Loading history...
275
        done()
276
      })
277
  });
278
});
279